package com.ithema.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.context.annotation.Scope;

//mybatisPlus的jar包下的注解类@TableName的value方法 专门用于pojo类名与sql中的表名对应  全局设置的话用yml前缀也可以设置
//@TableName(value = "db_user")
//lombok是种jar包  可以快速开发实体类pojo层的
@Data//此注解不包含构造方法(不包含有参和无参)
@NoArgsConstructor//加载 无参注解
@AllArgsConstructor//加载 有参注解
@Scope(value = "prototype")
public class User {

    //    @TableId(type = IdType.AUTO)//设置为自增长模式
//    @TableId(type = IdType.INPUT)//设置主键id为  为手动输入    前提是数据库中主键id不能是自增长模式
    @TableId(type = IdType.ASSIGN_ID)//设置主键id为  为生成id   雪花算法   默认类型   可以在yml文件中设置成全局设定
    private Long id;//数据库里面的bigint相当于 java中的 Long

    private String name;

    @TableField(value = "pwd", select = false)//select方法默认为true 显示该变量， false为不显示该变量
    private String password;//如果 该类名和表名  不一致  会爆出SQLSyntaxErrorException异常 此时要加注解 @TableField(value="表名中对应的字段");

    private Integer age;//用来表示年龄的下限

    private String tel;

    @TableField(exist = false)//告诉mp这个变量在sql表字段中没有  这样不会报错
    private Integer online;//在线      该online变量  对应的 表字段  不存在，   要想告诉mp ，必须设置@TableField(exist = false)

    //级联（逻辑）删除字段(不是真正的删除)  , 标记当前记录是否删除    0是没删除   1是删除
//    @TableLogic(value = "0",delval = "1")//这里也可以采用yml配置 全局处理
    private Integer deleted;

    //    该字段设置  乐观锁
    @Version
    private Integer version;

}
